{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "91h0Xy_rwAiI"
   },
   "source": [
    "[Open In Colab](https://colab.research.google.com/github/shibing624/textgen/blob/main/examples/T5/T5_Finetune_Chinese_Couplet.ipynb)\n",
    "\n",
    "\n",
    "# T5 对联\n",
    "- 设计：Pretrained T5 + “对联 prompt” fine-tuning\n",
    "  - 对比我的 [transformer training from scratch](https://github.com/hululuzhu/chinese-ai-writing-share/blob/main/%E4%B8%AD%E6%96%87%E5%AF%B9%E8%81%94Transformer_Source_Code_V1.ipynb)\n",
    "- 数据：[对联github](https://github.com/wb14123/couplet-dataset)\n",
    "- 相关内容\n",
    "  - [Huggingface](https://huggingface.co/)\n",
    "  - LangZhou Chinese [MengZi T5 pretrained Model](https://huggingface.co/Langboat/mengzi-t5-base) and [paper](https://arxiv.org/pdf/2110.06696.pdf)\n",
    "  - [textgen](https://github.com/shibing624/textgen)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "id": "jh1u7dR-4KOD"
   },
   "outputs": [],
   "source": [
    "# If for quick test purpose, if so, use 3k samples instead of 800k\n",
    "IS_TEST_FLOW = True  #@param {type:\"boolean\"}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "l7d0DkeX4zNa",
    "outputId": "5bfa1728-3ad7-4cd0-fdf9-b82ea8f70128"
   },
   "outputs": [],
   "source": [
    "# from google.colab import drive\n",
    "# drive.mount('/content/drive')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "r7DxQJEq7XJR"
   },
   "source": [
    "## Prepare Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "id": "4P1rfoNJ95zi"
   },
   "outputs": [],
   "source": [
    "import argparse\n",
    "from loguru import logger\n",
    "import sys\n",
    "import os\n",
    "import pathlib\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import pickle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "u-e4LR5N7aTH",
    "outputId": "ffe79a1e-d86d-4b0b-dec6-a0524dce9201"
   },
   "outputs": [],
   "source": [
    "working_dir = \"./\"\n",
    "!mkdir -p {working_dir}\n",
    "!wget https://github.com/wb14123/couplet-dataset/releases/download/1.0/couplet.tar.gz -P {working_dir}\n",
    "!ls -l {working_dir}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "id": "tYAnd4kJ7k9T"
   },
   "outputs": [],
   "source": [
    "!mkdir -p {working_dir}/couplet_files\n",
    "!tar -xf {working_dir}/couplet.tar.gz -C {working_dir}/couplet_files"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "WR3HY2Jd7mvs",
    "outputId": "12e11300-17ee-4be6-8663-f1247caa26a5"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "==> .//couplet_files/couplet/train/in.txt <==\n",
      "晚 风 摇 树 树 还 挺 \n",
      "\n",
      "==> .//couplet_files/couplet/train/out.txt <==\n",
      "晨 露 润 花 花 更 红 \n"
     ]
    }
   ],
   "source": [
    "!head -1 {working_dir}/couplet_files/couplet/train/in.txt {working_dir}/couplet_files/couplet/train/out.txt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "id": "mzBcom9i8PRv"
   },
   "outputs": [],
   "source": [
    "COUPLET_PATH = f'{working_dir}/couplet_files/couplet'\n",
    "MAX_SEQ_LEN = 32  # Max 32 chinese char including punctuation marks\n",
    "COUPLET_PROMPOT = '对联：'\n",
    "\n",
    "train_df, test_df = None, None\n",
    "for t in ['train', 'test']:\n",
    "    ins, outs = [], []\n",
    "    for i in ['in', 'out']:\n",
    "        with open(f\"{COUPLET_PATH}/{t}/{i}.txt\", \"r\") as f:\n",
    "            for line in f:\n",
    "                clean_line = line.strip().replace(' ', '').replace('\\n', '').replace('\\r', '')[:MAX_SEQ_LEN]\n",
    "                if i == 'in':\n",
    "                    ins.append(clean_line)\n",
    "                else:\n",
    "                    outs.append(clean_line)\n",
    "    # The column names to match textgen\n",
    "    data_dict = {\n",
    "        'prefix': [COUPLET_PROMPOT] * len(ins),\n",
    "        'input_text': ins,\n",
    "        'target_text': outs,\n",
    "    }\n",
    "    if t == 'train':\n",
    "        train_df = pd.DataFrame(data_dict)\n",
    "    else:\n",
    "        test_df = pd.DataFrame(data_dict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "id": "H9ntkw29-WgR"
   },
   "outputs": [],
   "source": [
    "# Ensure size match for every train/test sample\n",
    "for df in [train_df, test_df]:\n",
    "    for i in range(len(df)):\n",
    "        if len(df['input_text'].values[i]) != len(df['target_text'].values[i]):\n",
    "            print(\"mismatch found:\", df['input_text'].values[i], df['target_text'].values[i])\n",
    "            break"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 424
    },
    "id": "GA06Bi_5_5Hd",
    "outputId": "a8a4f0c3-60f2-48a9-a684-898d6ea431c2"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>prefix</th>\n",
       "      <th>input_text</th>\n",
       "      <th>target_text</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>对联：</td>\n",
       "      <td>晚风摇树树还挺</td>\n",
       "      <td>晨露润花花更红</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>对联：</td>\n",
       "      <td>愿景天成无墨迹</td>\n",
       "      <td>万方乐奏有于阗</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>对联：</td>\n",
       "      <td>丹枫江冷人初去</td>\n",
       "      <td>绿柳堤新燕复来</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  prefix input_text target_text\n",
       "0    对联：    晚风摇树树还挺     晨露润花花更红\n",
       "1    对联：    愿景天成无墨迹     万方乐奏有于阗\n",
       "2    对联：    丹枫江冷人初去     绿柳堤新燕复来"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df[:3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 407
    },
    "id": "LqEevmsA_-je",
    "outputId": "71e65344-4e33-4b59-c305-acb41c35a351"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>prefix</th>\n",
       "      <th>input_text</th>\n",
       "      <th>target_text</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>对联：</td>\n",
       "      <td>腾飞上铁，锐意改革谋发展，勇当千里马</td>\n",
       "      <td>和谐南供，安全送电保畅通，争做领头羊</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>对联：</td>\n",
       "      <td>风弦未拨心先乱</td>\n",
       "      <td>夜幕已沉梦更闲</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>对联：</td>\n",
       "      <td>花梦粘于春袖口</td>\n",
       "      <td>莺声溅落柳枝头</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  prefix          input_text         target_text\n",
       "0    对联：  腾飞上铁，锐意改革谋发展，勇当千里马  和谐南供，安全送电保畅通，争做领头羊\n",
       "1    对联：             风弦未拨心先乱             夜幕已沉梦更闲\n",
       "2    对联：             花梦粘于春袖口             莺声溅落柳枝头"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_df[:3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train 770491 eval 4000\n",
      "train 300 eval 30\n"
     ]
    }
   ],
   "source": [
    "eval_df = test_df\n",
    "print(\"train\", len(train_df), \"eval\", len(eval_df))\n",
    "\n",
    "train_df = train_df.sample(300) if IS_TEST_FLOW else train_df\n",
    "eval_df = eval_df.sample(30) if IS_TEST_FLOW else eval_df\n",
    "print(\"train\", len(train_df), \"eval\", len(eval_df))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "cUo-RWuy7anh"
   },
   "source": [
    "## Prepare Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "id": "xF-_eCCa1pKO"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sat Aug 13 09:10:57 2022       \n",
      "+-----------------------------------------------------------------------------+\n",
      "| NVIDIA-SMI 440.118.02   Driver Version: 440.118.02   CUDA Version: 10.2     |\n",
      "|-------------------------------+----------------------+----------------------+\n",
      "| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\n",
      "| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |\n",
      "|===============================+======================+======================|\n",
      "|   0  Tesla V100-SXM2...  On   | 00000000:00:09.0 Off |                    0 |\n",
      "| N/A   37C    P0    36W / 300W |   9500MiB / 32510MiB |      0%      Default |\n",
      "+-------------------------------+----------------------+----------------------+\n",
      "                                                                               \n",
      "+-----------------------------------------------------------------------------+\n",
      "| Processes:                                                       GPU Memory |\n",
      "|  GPU       PID   Type   Process name                             Usage      |\n",
      "|=============================================================================|\n",
      "|    0     22015      C   ...rch/odin/anaconda3/envs/py39/bin/python  9489MiB |\n",
      "+-----------------------------------------------------------------------------+\n"
     ]
    }
   ],
   "source": [
    "!nvidia-smi  # Check GPU, P100/16G takes 100mins per epoch similar to 1080"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "id": "RWJbkGe31H2M"
   },
   "outputs": [],
   "source": [
    "# Quite install textgen package\n",
    "!pip install -q textgen"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "arH3_6g62C6j",
    "outputId": "ba01488b-bf8a-44b0-8b6c-671655ad4a32"
   },
   "outputs": [],
   "source": [
    "import torch\n",
    "import sys\n",
    "sys.path.append('../..')\n",
    "from textgen.t5 import T5Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "id": "NMAqYrr72Haj"
   },
   "outputs": [],
   "source": [
    "model_type = 't5'\n",
    "model_name = \"Langboat/mengzi-t5-base\"\n",
    "output_dir = 'outputs/mengzi_t5_couplet/'\n",
    "max_seq_length = 50\n",
    "num_epochs = 5\n",
    "batch_size = 32"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 141,
     "referenced_widgets": [
      "347783054f9a416fa184f331e79ddadb",
      "fa5f3372b3ee4a1bb67f72d8d25493aa",
      "e0952b5402f24dc1b24cae7564ea2166",
      "600dcc89a42d46d6815f0eb3ae2850d0",
      "a7a9b1a44dc04f668ca5e1d7d6d92e84",
      "055f110dcdf84679b01e11850cee515a",
      "10b1058349e24e93bb6a115f40863d98",
      "afe7a3a5cd91414d879dd3e7bcc84da6",
      "e01999c6f2a14d6db1fdb4f0000f50b3",
      "4800de499cfe4387bc051e34c0592c09",
      "c35a5af6f70346129fb78e0c5e50f0d5",
      "bac3bee77ea74da6948c2e664a7a388f",
      "582ca6ef9c2144a3b10754c49d042523",
      "9e6aae3746d34729a9e5e95f78ac2505",
      "6822978367f84580a33373243573e9ac",
      "41cd4a8d417d4ffda358eb31e6c68bf1",
      "8d5a844feec345009819f7d90e2d6bbf",
      "e51f01d5b45e4c56a3a8faf3f30cc106",
      "674f9a78c65e4c168e3b279ec57d9d74",
      "c03dc992c94145dd9bfb03c894910859",
      "c3ab3fd9aeb6479aa4972e1dde0a3b57",
      "563defb484034a72ae31322b774e2f0c",
      "dbdca4f22b634f42810163ffa574bedb",
      "a893bbcd40de4f01a271646bc6c8c549",
      "26d50a278c7b4d4eb05885dcd73d9b7e",
      "16e34f9591c242d299b32ecf01e904c0",
      "fa9482b3d6d24ea1b35df119ecd10539",
      "368cc29fb14f4a249d47e3836077e353",
      "86160f67174c426aa928049a3271054e",
      "fd30383339904dc2ad7be314d98923c7",
      "fe716937cbce463e88e69137562d370e",
      "9f5f221feeca4f2fa92ea009a9592111",
      "adaacddbb2ce43f4a55cefe8c1631c13"
     ]
    },
    "id": "bp4gntME3T99",
    "outputId": "6cb21524-600e-4d5d-c7f7-5b5d50832630"
   },
   "outputs": [],
   "source": [
    "model_args = {\n",
    "    \"reprocess_input_data\": True,\n",
    "    \"overwrite_output_dir\": True,\n",
    "    \"max_seq_length\": max_seq_length,\n",
    "    \"max_length\": max_seq_length,\n",
    "    \"train_batch_size\": batch_size,\n",
    "    \"num_train_epochs\": num_epochs,\n",
    "    \"save_eval_checkpoints\": False,\n",
    "    \"save_model_every_epoch\": False,\n",
    "    \"evaluate_generated_text\": True,\n",
    "    \"evaluate_during_training\": True,\n",
    "    \"evaluate_during_training_verbose\": True,\n",
    "    \"use_multiprocessing\": False,\n",
    "    \"save_best_model\": True,\n",
    "    \"output_dir\": output_dir,\n",
    "    \"use_early_stopping\": True,\n",
    "}\n",
    "# model_type: t5  model_name: Langboat/mengzi-t5-base\n",
    "model = T5Model(model_type, model_name, args=model_args)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "BwiMnph5AeEA",
    "outputId": "a1ce80e9-2827-45a4-95a2-b14b47330733"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'input_ids': [1347, 13, 7995, 2205, 355, 1973, 17, 1], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1]}"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.tokenizer(\"回答：天上有没有云彩？\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 35
    },
    "id": "qf82IR5lCQ4B",
    "outputId": "f9dc6916-67d3-4cc1-e050-17403b5b2c5a"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'回答:天上有没有云彩?</s>'"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.tokenizer.decode([1347, 13, 7995, 2205, 355, 1973, 17, 1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "id": "9dokkGMd3bLT"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inputs: ['灵蛇出洞千山秀']\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "efadfa84911b4269beadb3eec9abb16d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Generating outputs:   0%|          | 0/1 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "outputs: ['联对联']\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/search/odin/anaconda3/envs/py39/lib/python3.9/site-packages/transformers/tokenization_utils_base.py:3557: FutureWarning: \n",
      "`prepare_seq2seq_batch` is deprecated and will be removed in version 5 of HuggingFace Transformers. Use the regular\n",
      "`__call__` method to prepare your inputs and the tokenizer under the `as_target_tokenizer` context manager to prepare\n",
      "your targets.\n",
      "\n",
      "Here is a short example:\n",
      "\n",
      "model_inputs = tokenizer(src_texts, ...)\n",
      "with tokenizer.as_target_tokenizer():\n",
      "    labels = tokenizer(tgt_texts, ...)\n",
      "model_inputs[\"labels\"] = labels[\"input_ids\"]\n",
      "\n",
      "See the documentation of your specific tokenizer for more details on the specific arguments to the tokenizer of choice.\n",
      "For a more complete example, see the implementation of `prepare_seq2seq_batch`.\n",
      "\n",
      "  warnings.warn(formatted_warning, FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "def predict_now(sentences, model=model, prefix=COUPLET_PROMPOT):\n",
    "    sentences_add_prefix = [prefix + \": \" + i for i in sentences]\n",
    "    print(\"inputs:\", sentences)\n",
    "    print(\"outputs:\", model.predict(sentences_add_prefix))\n",
    "\n",
    "predict_now([\"灵蛇出洞千山秀\"], model=model)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ksiYowfyvbsu"
   },
   "source": [
    "## Training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 324,
     "referenced_widgets": [
      "dadec06cae5f4e91b529be45235a0376",
      "1880c7ca098b4dbb975447d5c8a31897",
      "addd65151c124432b5b997cbb90ec97e",
      "51ad9ab469ef4014a068ff58f142e374",
      "3e9214d5327b4d6b9f89c19691517b1d",
      "aa58fce17298481a9cd84b032be90a27",
      "0abd810968c949d084c58a59d08c4f7b",
      "d35f09452f5945c2a5bcfb43d1bf05e9",
      "74c54a55a00f4679a5c01c074109411c",
      "462f63a715f849829926b6f21fc16044",
      "9f02228a5cef4cd9bb41ee3e328d42d6",
      "32a5d625a8484278914b6667de3afa13",
      "9783d7add40349f980e984022f284f7c",
      "183f998adbaf4a28bc48a3e14204b6f8",
      "9446e81b3c974e1b867952a0768a32d3",
      "5ac186ac4903494f9f21e1a2d3ab02ef",
      "a57be5edd2e545a4b73d08ebb28a6ccc",
      "d17d5f77b5f24804b98b34491cab7bc0",
      "fd14de107511431db32db3374ab0f0d6",
      "3ff51ed2402f40b5a6fdb1f4c181fe6f",
      "867b7ca466fe4d81a9e6f71563555173",
      "cdbf7b8f745f4c74bfdc28cecadd7dca",
      "24f0ef22ea6642848dfef2edab631452",
      "51f0ffc791e04af0b5c962289409cce3",
      "0a4d5d31968941b5be9231f401afbcca",
      "f2b3019a0f924d5dab5b772829c9b6b1",
      "b6f8022d29e74cb9b36ebe2bd158280f",
      "efb90bcad30b406dae3f1260ad01e9e2",
      "c7b0a4e0048943698b000bab1d7128e9",
      "9e63e9d12d35423387abc1f08a4b289b",
      "e3d62a91e874406996b5e8d6e76073df",
      "c6b5a03ab032476d8225d1350302d889",
      "00267d42ddee43dca3336b6a79e5c1a7",
      "db25ff9b1c12431bbcb8b2533458ddbf",
      "986c7c0f0e644c6590267ea2d394cbc8",
      "7c39efccfa784f0db7bfb5360e1f3297",
      "8db825d776524542b4e14fd1d92c185d",
      "25dfe876f2a3497f97ec3e837ee7a845",
      "5b8fe7de2125444094b2bf3e67cfd83a",
      "90f27f3c643f4ffa9fa246050261c415",
      "f13f18f43adf4f05ab1645fea6f30afb",
      "1d7c12bca1dc49fe88b278126a88ab84",
      "98d5094843904280abbca9d0205934db",
      "5b4695d2bfa04f97a95d20a1865744ac",
      "98ad690699dd42b5a498b390a2449b9c",
      "4af245cda5a140f1a85068fa7a14423b",
      "87e200ac0d3d49329b170042dd9d22b3",
      "b0a64f9ba5af4001b0eceb08607deee1",
      "7b45db17321d47298541c1a71bda12f1",
      "f2876e5f55c54fffbd0e993f1af1c309",
      "e23935de00024ff9b02ab1c377d54662",
      "a791c980a358490b8ef04ef24f0680ca",
      "737a80593b904b3987bac84ed2f799a5",
      "ccfc5fb3d4964b5287a4c8da3fef57ce",
      "81e04821c14f43b4b64441664934a397"
     ]
    },
    "id": "Mjj6j541AEGI",
    "outputId": "a3fcad46-9fc3-4d15-e34f-2569e0afad00"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:19.633 | INFO     | textgen.t5.t5_utils:__init__:139 -  Creating features from dataset file at cache_dir/\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "56e229dbb99746bca8d4620a4ba2447d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/300 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:19.780 | INFO     | textgen.t5.t5_utils:__init__:170 -  Saving features into cached file cache_dir/Langboat_mengzi-t5-base_cached_50300\n",
      "2022-08-13 09:11:19.823 | INFO     | textgen.t5.t5_model:train:434 -  Training started\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "9f8efce356fa49a0b49aa1339361b8bf",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Epoch:   0%|          | 0/5 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "18173ace93af449c90bd8c42c771bb11",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Running Epoch 0 of 5:   0%|          | 0/10 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:23.076 | INFO     | textgen.t5.t5_utils:__init__:139 -  Creating features from dataset file at cache_dir/\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e1e8923d0dbe45be9f4719ad7a62e57b",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/30 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:23.110 | INFO     | textgen.t5.t5_utils:__init__:170 -  Saving features into cached file cache_dir/Langboat_mengzi-t5-base_cached_5030\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "265f576c1d9e42e89e9ee0c0c9f27d02",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Generating outputs:   0%|          | 0/4 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:23.376 | DEBUG    | __main__:count_matches:10 - labels: ['诗多积累意常新', '十分无奈做先生', '乐海泛舟渡静心', '四方菜色，咸酸苦辣各留香', '笑脸，迎接十方来客', '阳羡春茶，兰陵美酒，四围花世界，芙蓉旧社水仙王', '伸手掬粼粼曙霭，清韶在握，几人留剎那辉华', '可意文章笔见锋', '砚底磨穿字有神', '誉满神州，喜看科大展雄风']\n",
      "2022-08-13 09:11:23.377 | DEBUG    | __main__:count_matches:11 - preds: ['', '', '', '', '', '', '', '', '', '']\n",
      "2022-08-13 09:11:23.377 | DEBUG    | __main__:count_matches:13 - match: 0.0\n",
      "2022-08-13 09:11:23.378 | INFO     | textgen.t5.t5_model:eval_model:940 - {'eval_loss': 7.219345688819885, 'matches': 0.0}\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "3d2714a151564d509b1117503ff7b7d2",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Running Epoch 1 of 5:   0%|          | 0/10 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:30.331 | INFO     | textgen.t5.t5_utils:__init__:139 -  Creating features from dataset file at cache_dir/\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "cd3e69fd57bf407b86e98bda8820d67f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/30 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:30.362 | INFO     | textgen.t5.t5_utils:__init__:170 -  Saving features into cached file cache_dir/Langboat_mengzi-t5-base_cached_5030\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c20480cbeb134f2d9ea3028c4dd057b1",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Generating outputs:   0%|          | 0/4 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:33.997 | DEBUG    | __main__:count_matches:10 - labels: ['诗多积累意常新', '十分无奈做先生', '乐海泛舟渡静心', '四方菜色，咸酸苦辣各留香', '笑脸，迎接十方来客', '阳羡春茶，兰陵美酒，四围花世界，芙蓉旧社水仙王', '伸手掬粼粼曙霭，清韶在握，几人留剎那辉华', '可意文章笔见锋', '砚底磨穿字有神', '誉满神州，喜看科大展雄风']\n",
      "2022-08-13 09:11:33.998 | DEBUG    | __main__:count_matches:11 - preds: [',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', ',三泡,三泡,三泡,,三泡,,三泡,,三泡,三泡,,,三泡,,,三泡,,,,,三泡,,,,,,三泡', '山山,山山,山山,山山,山山,山,山,山山,山山,山,山,山,山,山,山,山,山,山,山,山,山,', '蒸蒸,蒸,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', ',宏愿,宏愿,宏愿,宏愿,宏愿,宏愿,宏愿,宏愿,宏愿,宏愿,宏愿,宏愿,宏愿,宏愿,宏愿,宏愿,', '山,山,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', ',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,', '香香,香香香,香香香香香香香香香香香香香香香香香香香香香香香,香香香香香香香香香,香香香香香香香香', '香香,香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香香', ',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,']\n",
      "2022-08-13 09:11:33.998 | DEBUG    | __main__:count_matches:13 - match: 0.32642403628117916\n",
      "2022-08-13 09:11:33.999 | INFO     | textgen.t5.t5_model:eval_model:940 - {'eval_loss': 7.101874232292175, 'matches': 0.32642403628117916}\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "020d7fa1c4a04e559d5a58069ba1c620",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Running Epoch 2 of 5:   0%|          | 0/10 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:40.993 | INFO     | textgen.t5.t5_utils:__init__:139 -  Creating features from dataset file at cache_dir/\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "00028ba78e634c558177be282f9f9ca8",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/30 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:41.027 | INFO     | textgen.t5.t5_utils:__init__:170 -  Saving features into cached file cache_dir/Langboat_mengzi-t5-base_cached_5030\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "64eaa528b934498ba520f2699db6983d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Generating outputs:   0%|          | 0/4 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:44.653 | DEBUG    | __main__:count_matches:10 - labels: ['诗多积累意常新', '十分无奈做先生', '乐海泛舟渡静心', '四方菜色，咸酸苦辣各留香', '笑脸，迎接十方来客', '阳羡春茶，兰陵美酒，四围花世界，芙蓉旧社水仙王', '伸手掬粼粼曙霭，清韶在握，几人留剎那辉华', '可意文章笔见锋', '砚底磨穿字有神', '誉满神州，喜看科大展雄风']\n",
      "2022-08-13 09:11:44.654 | DEBUG    | __main__:count_matches:11 - preds: ['山羊羊舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞', '九万程马扬蹄羊舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞', '山里春风扶摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇', '九万程马扬蹄羊舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞', '山羊羊舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞', '山里春风摇九万程马扬蹄金羊跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃', '山里春风扶摇九万程马扬蹄跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃跃', '山里春风扶摇九万程马扬蹄舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞', '山羊羊舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞', '羊舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞舞']\n",
      "2022-08-13 09:11:44.654 | DEBUG    | __main__:count_matches:13 - match: 0.3413423180592992\n",
      "2022-08-13 09:11:44.655 | INFO     | textgen.t5.t5_model:eval_model:940 - {'eval_loss': 7.694888710975647, 'matches': 0.3413423180592992}\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b942e395dde2474ba05613932b6f8a1b",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Running Epoch 3 of 5:   0%|          | 0/10 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:47.781 | INFO     | textgen.t5.t5_utils:__init__:139 -  Creating features from dataset file at cache_dir/\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "95ed92f664254fc4bda81d819552e6ba",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/30 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:47.819 | INFO     | textgen.t5.t5_utils:__init__:170 -  Saving features into cached file cache_dir/Langboat_mengzi-t5-base_cached_5030\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "0fa289fea82b4a81b601903f1286d465",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Generating outputs:   0%|          | 0/4 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:51.592 | DEBUG    | __main__:count_matches:10 - labels: ['诗多积累意常新', '十分无奈做先生', '乐海泛舟渡静心', '四方菜色，咸酸苦辣各留香', '笑脸，迎接十方来客', '阳羡春茶，兰陵美酒，四围花世界，芙蓉旧社水仙王', '伸手掬粼粼曙霭，清韶在握，几人留剎那辉华', '可意文章笔见锋', '砚底磨穿字有神', '誉满神州，喜看科大展雄风']\n",
      "2022-08-13 09:11:51.593 | DEBUG    | __main__:count_matches:11 - preds: ['心融神会,心融神会,心融神会子弟心融神会子弟心融神会子弟心融神会子弟心融神会子弟心融神会子弟心融神会子弟心融神会', '十二万年,遂令吴会子弟,遂令吴会子弟,遂令吴会子弟,遂令吴会子弟,遂令吴会子弟,遂令吴会子弟,遂令吴会子弟,遂令吴会', '书家书家书家书家书家书家书家书家书家书家书家书家书家书家书家书家书家书家书家书家书家书家书家书家书', '十二万年,愿舍身劳矣,谈笑何劳矣,谈笑何劳矣,谈笑何劳矣,谈笑何劳矣,谈笑何劳矣,谈笑何劳矣,谈笑何劳', '知,知,知,知,知,知,知,知,知,知,知,知,知,知,知,知,知,知,知,知,知,知,知,知,知', '府衙,遂令吴会子弟,遂令吴会子弟,遂令吴会子弟,遂令吴会子弟,遂令吴会子弟,遂令吴会子弟,遂令吴会子弟,遂令吴会', '历寒窗数载,故知新,故知新,故知新,故知新,故知新,故知新,故知新,故知新,故知新,故知新,故知新', '故知新知新知新知新知新知新谋新谋新谋新谋新谋新谋新谋新谋新谋新谋新谋新谋新谋新谋新谋新谋新谋新谋新', '书页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页页', '孙讨逆竟死于小人之手,遂令吴会子弟,遂令吴会子弟,遂令吴会子弟,遂令吴会子弟,遂令吴会子弟,遂令吴会子弟,遂令吴会子弟']\n",
      "2022-08-13 09:11:51.594 | DEBUG    | __main__:count_matches:13 - match: 0.37365775422416103\n",
      "2022-08-13 09:11:51.594 | INFO     | textgen.t5.t5_model:eval_model:940 - {'eval_loss': 7.790939569473267, 'matches': 0.37365775422416103}\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "9d527389987244db94b63d26d1bfa121",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Running Epoch 4 of 5:   0%|          | 0/10 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:54.743 | INFO     | textgen.t5.t5_utils:__init__:139 -  Creating features from dataset file at cache_dir/\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b2dc23afbd9a4ed1a587ba323c9276f9",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/30 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:54.774 | INFO     | textgen.t5.t5_utils:__init__:170 -  Saving features into cached file cache_dir/Langboat_mengzi-t5-base_cached_5030\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f60004246d234b6f8eeb805886b77b33",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Generating outputs:   0%|          | 0/4 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:57.580 | DEBUG    | __main__:count_matches:10 - labels: ['诗多积累意常新', '十分无奈做先生', '乐海泛舟渡静心', '四方菜色，咸酸苦辣各留香', '笑脸，迎接十方来客', '阳羡春茶，兰陵美酒，四围花世界，芙蓉旧社水仙王', '伸手掬粼粼曙霭，清韶在握，几人留剎那辉华', '可意文章笔见锋', '砚底磨穿字有神', '誉满神州，喜看科大展雄风']\n",
      "2022-08-13 09:11:57.581 | DEBUG    | __main__:count_matches:11 - preds: ['身', '七斗,八斗,八斗,八时物态数潜山', '山磨风刃,杀出英才', '八时,八时物态数潜山', '大舌头,能吃眼前亏,能吃眼前亏,能吃眼前亏,能吃眼前亏,能吃眼前亏,能吃眼前亏,能吃眼前亏,能吃眼前亏,能吃眼前亏,能', '山磨风刃,四时物态数潜山,四时物态数潜山,四时物态数潜山,四时物态数潜山,四时物态数潜山,四时物态', '风化相思已惘然,聊以金牌慰慈亲', '融入生活', '书香', '誉满鄂南,名扬荆楚,谁留荆楚,谁留荆楚,谁留荆楚,谁留荆楚,谁留荆楚,谁留荆楚,谁留荆楚,谁留荆楚']\n",
      "2022-08-13 09:11:57.582 | DEBUG    | __main__:count_matches:13 - match: 1.2713519839862775\n",
      "2022-08-13 09:11:57.582 | INFO     | textgen.t5.t5_model:eval_model:940 - {'eval_loss': 8.233440518379211, 'matches': 1.2713519839862775}\n",
      "2022-08-13 09:11:58.946 | INFO     | textgen.t5.t5_model:train_model:235 -  Training of Langboat/mengzi-t5-base model complete. Saved to outputs/mengzi_t5_couplet/.\n",
      "2022-08-13 09:11:58.952 | INFO     | textgen.t5.t5_utils:__init__:139 -  Creating features from dataset file at cache_dir/\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "3719c8601e6d4bf78ce2c40dd4170cbd",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/30 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:11:58.984 | INFO     | textgen.t5.t5_utils:__init__:170 -  Saving features into cached file cache_dir/Langboat_mengzi-t5-base_cached_5030\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "30a96be64d2f48bf899fcd9422b9dbf0",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Running Evaluation:   0%|          | 0/4 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "56668d435c7e4502b7cba86c2372c035",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Generating outputs:   0%|          | 0/4 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-08-13 09:12:01.898 | DEBUG    | __main__:count_matches:10 - labels: ['诗多积累意常新', '十分无奈做先生', '乐海泛舟渡静心', '四方菜色，咸酸苦辣各留香', '笑脸，迎接十方来客', '阳羡春茶，兰陵美酒，四围花世界，芙蓉旧社水仙王', '伸手掬粼粼曙霭，清韶在握，几人留剎那辉华', '可意文章笔见锋', '砚底磨穿字有神', '誉满神州，喜看科大展雄风']\n",
      "2022-08-13 09:12:01.899 | DEBUG    | __main__:count_matches:11 - preds: ['身', '七斗,八斗,八斗,八时物态数潜山', '山磨风刃,杀出英才', '八时,八时物态数潜山', '大舌头,能吃眼前亏,能吃眼前亏,能吃眼前亏,能吃眼前亏,能吃眼前亏,能吃眼前亏,能吃眼前亏,能吃眼前亏,能吃眼前亏,能', '山磨风刃,四时物态数潜山,四时物态数潜山,四时物态数潜山,四时物态数潜山,四时物态数潜山,四时物态', '风化相思已惘然,聊以金牌慰慈亲', '融入生活', '书香', '誉满鄂南,名扬荆楚,谁留荆楚,谁留荆楚,谁留荆楚,谁留荆楚,谁留荆楚,谁留荆楚,谁留荆楚,谁留荆楚']\n",
      "2022-08-13 09:12:01.900 | DEBUG    | __main__:count_matches:13 - match: 1.2713519839862775\n",
      "2022-08-13 09:12:01.900 | INFO     | textgen.t5.t5_model:eval_model:940 - {'eval_loss': 8.233440518379211, 'matches': 1.2713519839862775}\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'eval_loss': 8.233440518379211, 'matches': 1.2713519839862775}\n"
     ]
    }
   ],
   "source": [
    "def sim_text_chars(text1, text2):\n",
    "    if not text1 or not text2:\n",
    "        return 0.0\n",
    "    same = set(text1) | set(text2)\n",
    "    m = len(same)\n",
    "    n = len(text1) if len(text1) > len(text2) else len(text2)\n",
    "    return m / n\n",
    "\n",
    "def count_matches(labels, preds):\n",
    "    logger.debug(f\"labels: {labels[:10]}\")\n",
    "    logger.debug(f\"preds: {preds[:10]}\")\n",
    "    match = sum([sim_text_chars(label, pred) for label, pred in zip(labels, preds)]) / len(labels)\n",
    "    logger.debug(f\"match: {match}\")\n",
    "    return match\n",
    "\n",
    "\n",
    "model.train_model(train_df, eval_data=eval_df, matches=count_matches)\n",
    "print(model.eval_model(eval_df, matches=count_matches))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "0yVcR981F6rn",
    "outputId": "f03d23f8-af0a-4fe5-d08d-154251bf3e2a"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inputs: ['灵蛇出洞千山秀']\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c70a786fa3884c0b9b8c8f69ef4baf2f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Generating outputs:   0%|          | 0/1 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "outputs: ['灵府难容正气人']\n"
     ]
    }
   ],
   "source": [
    "predict_now([\"灵蛇出洞千山秀\"], model=model)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "本节完。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "collapsed_sections": [],
   "name": "WIP T5 Finetune Chinese Couplet V1",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "00267d42ddee43dca3336b6a79e5c1a7": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "055f110dcdf84679b01e11850cee515a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "0a4d5d31968941b5be9231f401afbcca": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_c7b0a4e0048943698b000bab1d7128e9",
      "placeholder": "​",
      "style": "IPY_MODEL_efb90bcad30b406dae3f1260ad01e9e2",
      "value": "Validating: 100%"
     }
    },
    "0abd810968c949d084c58a59d08c4f7b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "10b1058349e24e93bb6a115f40863d98": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "16e34f9591c242d299b32ecf01e904c0": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_fe716937cbce463e88e69137562d370e",
      "max": 990389880,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_fd30383339904dc2ad7be314d98923c7",
      "value": 990389880
     }
    },
    "183f998adbaf4a28bc48a3e14204b6f8": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_d17d5f77b5f24804b98b34491cab7bc0",
      "placeholder": "​",
      "style": "IPY_MODEL_a57be5edd2e545a4b73d08ebb28a6ccc",
      "value": "Epoch 2: 100%"
     }
    },
    "1880c7ca098b4dbb975447d5c8a31897": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": "inline-flex",
      "flex": null,
      "flex_flow": "row wrap",
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": "100%"
     }
    },
    "1d7c12bca1dc49fe88b278126a88ab84": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": "2",
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "24f0ef22ea6642848dfef2edab631452": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_0a4d5d31968941b5be9231f401afbcca",
       "IPY_MODEL_f2b3019a0f924d5dab5b772829c9b6b1",
       "IPY_MODEL_b6f8022d29e74cb9b36ebe2bd158280f"
      ],
      "layout": "IPY_MODEL_51f0ffc791e04af0b5c962289409cce3"
     }
    },
    "25dfe876f2a3497f97ec3e837ee7a845": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_5b4695d2bfa04f97a95d20a1865744ac",
      "placeholder": "​",
      "style": "IPY_MODEL_98d5094843904280abbca9d0205934db",
      "value": " 63/63 [00:11&lt;00:00,  5.66it/s]"
     }
    },
    "26d50a278c7b4d4eb05885dcd73d9b7e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_86160f67174c426aa928049a3271054e",
      "placeholder": "​",
      "style": "IPY_MODEL_368cc29fb14f4a249d47e3836077e353",
      "value": "Downloading: 100%"
     }
    },
    "32a5d625a8484278914b6667de3afa13": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_183f998adbaf4a28bc48a3e14204b6f8",
       "IPY_MODEL_9446e81b3c974e1b867952a0768a32d3",
       "IPY_MODEL_5ac186ac4903494f9f21e1a2d3ab02ef"
      ],
      "layout": "IPY_MODEL_9783d7add40349f980e984022f284f7c"
     }
    },
    "347783054f9a416fa184f331e79ddadb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_e0952b5402f24dc1b24cae7564ea2166",
       "IPY_MODEL_600dcc89a42d46d6815f0eb3ae2850d0",
       "IPY_MODEL_a7a9b1a44dc04f668ca5e1d7d6d92e84"
      ],
      "layout": "IPY_MODEL_fa5f3372b3ee4a1bb67f72d8d25493aa"
     }
    },
    "368cc29fb14f4a249d47e3836077e353": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "3e9214d5327b4d6b9f89c19691517b1d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_9f02228a5cef4cd9bb41ee3e328d42d6",
      "placeholder": "​",
      "style": "IPY_MODEL_462f63a715f849829926b6f21fc16044",
      "value": " 0/2 [00:00&lt;?, ?it/s]"
     }
    },
    "3ff51ed2402f40b5a6fdb1f4c181fe6f": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": "2",
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "41cd4a8d417d4ffda358eb31e6c68bf1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_563defb484034a72ae31322b774e2f0c",
      "placeholder": "​",
      "style": "IPY_MODEL_c3ab3fd9aeb6479aa4972e1dde0a3b57",
      "value": " 659/659 [00:00&lt;00:00, 4.69kB/s]"
     }
    },
    "462f63a715f849829926b6f21fc16044": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "4800de499cfe4387bc051e34c0592c09": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "4af245cda5a140f1a85068fa7a14423b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": "inline-flex",
      "flex": null,
      "flex_flow": "row wrap",
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": "100%"
     }
    },
    "51ad9ab469ef4014a068ff58f142e374": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "danger",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_74c54a55a00f4679a5c01c074109411c",
      "max": 2,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_d35f09452f5945c2a5bcfb43d1bf05e9",
      "value": 0
     }
    },
    "51f0ffc791e04af0b5c962289409cce3": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": "inline-flex",
      "flex": null,
      "flex_flow": "row wrap",
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": "100%"
     }
    },
    "563defb484034a72ae31322b774e2f0c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "582ca6ef9c2144a3b10754c49d042523": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "5ac186ac4903494f9f21e1a2d3ab02ef": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_cdbf7b8f745f4c74bfdc28cecadd7dca",
      "placeholder": "​",
      "style": "IPY_MODEL_867b7ca466fe4d81a9e6f71563555173",
      "value": " 142/142 [01:35&lt;00:00,  1.49it/s, loss=4.02, v_num=0, train_loss=3.990, val_loss=4.640]"
     }
    },
    "5b4695d2bfa04f97a95d20a1865744ac": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "5b8fe7de2125444094b2bf3e67cfd83a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "600dcc89a42d46d6815f0eb3ae2850d0": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_e01999c6f2a14d6db1fdb4f0000f50b3",
      "max": 725135,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_afe7a3a5cd91414d879dd3e7bcc84da6",
      "value": 725135
     }
    },
    "674f9a78c65e4c168e3b279ec57d9d74": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "6822978367f84580a33373243573e9ac": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_c03dc992c94145dd9bfb03c894910859",
      "max": 659,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_674f9a78c65e4c168e3b279ec57d9d74",
      "value": 659
     }
    },
    "737a80593b904b3987bac84ed2f799a5": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": "2",
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "74c54a55a00f4679a5c01c074109411c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": "2",
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "7b45db17321d47298541c1a71bda12f1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_81e04821c14f43b4b64441664934a397",
      "placeholder": "​",
      "style": "IPY_MODEL_ccfc5fb3d4964b5287a4c8da3fef57ce",
      "value": " 63/63 [00:11&lt;00:00,  5.66it/s]"
     }
    },
    "7c39efccfa784f0db7bfb5360e1f3297": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_90f27f3c643f4ffa9fa246050261c415",
      "placeholder": "​",
      "style": "IPY_MODEL_5b8fe7de2125444094b2bf3e67cfd83a",
      "value": "Validating: 100%"
     }
    },
    "81e04821c14f43b4b64441664934a397": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "86160f67174c426aa928049a3271054e": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "867b7ca466fe4d81a9e6f71563555173": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "87e200ac0d3d49329b170042dd9d22b3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_e23935de00024ff9b02ab1c377d54662",
      "placeholder": "​",
      "style": "IPY_MODEL_f2876e5f55c54fffbd0e993f1af1c309",
      "value": "Validating: 100%"
     }
    },
    "8d5a844feec345009819f7d90e2d6bbf": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "8db825d776524542b4e14fd1d92c185d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_1d7c12bca1dc49fe88b278126a88ab84",
      "max": 63,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_f13f18f43adf4f05ab1645fea6f30afb",
      "value": 63
     }
    },
    "90f27f3c643f4ffa9fa246050261c415": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "9446e81b3c974e1b867952a0768a32d3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_3ff51ed2402f40b5a6fdb1f4c181fe6f",
      "max": 142,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_fd14de107511431db32db3374ab0f0d6",
      "value": 142
     }
    },
    "9783d7add40349f980e984022f284f7c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": "inline-flex",
      "flex": null,
      "flex_flow": "row wrap",
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": "100%"
     }
    },
    "986c7c0f0e644c6590267ea2d394cbc8": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": "inline-flex",
      "flex": null,
      "flex_flow": "row wrap",
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": "100%"
     }
    },
    "98ad690699dd42b5a498b390a2449b9c": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_87e200ac0d3d49329b170042dd9d22b3",
       "IPY_MODEL_b0a64f9ba5af4001b0eceb08607deee1",
       "IPY_MODEL_7b45db17321d47298541c1a71bda12f1"
      ],
      "layout": "IPY_MODEL_4af245cda5a140f1a85068fa7a14423b"
     }
    },
    "98d5094843904280abbca9d0205934db": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "9e63e9d12d35423387abc1f08a4b289b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "9e6aae3746d34729a9e5e95f78ac2505": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_e51f01d5b45e4c56a3a8faf3f30cc106",
      "placeholder": "​",
      "style": "IPY_MODEL_8d5a844feec345009819f7d90e2d6bbf",
      "value": "Downloading: 100%"
     }
    },
    "9f02228a5cef4cd9bb41ee3e328d42d6": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "9f5f221feeca4f2fa92ea009a9592111": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "a57be5edd2e545a4b73d08ebb28a6ccc": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "a791c980a358490b8ef04ef24f0680ca": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "a7a9b1a44dc04f668ca5e1d7d6d92e84": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_c35a5af6f70346129fb78e0c5e50f0d5",
      "placeholder": "​",
      "style": "IPY_MODEL_4800de499cfe4387bc051e34c0592c09",
      "value": " 725k/725k [00:01&lt;00:00, 840kB/s]"
     }
    },
    "a893bbcd40de4f01a271646bc6c8c549": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "aa58fce17298481a9cd84b032be90a27": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "adaacddbb2ce43f4a55cefe8c1631c13": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "addd65151c124432b5b997cbb90ec97e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_0abd810968c949d084c58a59d08c4f7b",
      "placeholder": "​",
      "style": "IPY_MODEL_aa58fce17298481a9cd84b032be90a27",
      "value": "Validation sanity check:   0%"
     }
    },
    "afe7a3a5cd91414d879dd3e7bcc84da6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "b0a64f9ba5af4001b0eceb08607deee1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_737a80593b904b3987bac84ed2f799a5",
      "max": 63,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_a791c980a358490b8ef04ef24f0680ca",
      "value": 63
     }
    },
    "b6f8022d29e74cb9b36ebe2bd158280f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_00267d42ddee43dca3336b6a79e5c1a7",
      "placeholder": "​",
      "style": "IPY_MODEL_c6b5a03ab032476d8225d1350302d889",
      "value": " 63/63 [00:11&lt;00:00,  5.64it/s]"
     }
    },
    "bac3bee77ea74da6948c2e664a7a388f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_9e6aae3746d34729a9e5e95f78ac2505",
       "IPY_MODEL_6822978367f84580a33373243573e9ac",
       "IPY_MODEL_41cd4a8d417d4ffda358eb31e6c68bf1"
      ],
      "layout": "IPY_MODEL_582ca6ef9c2144a3b10754c49d042523"
     }
    },
    "c03dc992c94145dd9bfb03c894910859": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c35a5af6f70346129fb78e0c5e50f0d5": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c3ab3fd9aeb6479aa4972e1dde0a3b57": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "c6b5a03ab032476d8225d1350302d889": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "c7b0a4e0048943698b000bab1d7128e9": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "ccfc5fb3d4964b5287a4c8da3fef57ce": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "cdbf7b8f745f4c74bfdc28cecadd7dca": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "d17d5f77b5f24804b98b34491cab7bc0": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "d35f09452f5945c2a5bcfb43d1bf05e9": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "dadec06cae5f4e91b529be45235a0376": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_addd65151c124432b5b997cbb90ec97e",
       "IPY_MODEL_51ad9ab469ef4014a068ff58f142e374",
       "IPY_MODEL_3e9214d5327b4d6b9f89c19691517b1d"
      ],
      "layout": "IPY_MODEL_1880c7ca098b4dbb975447d5c8a31897"
     }
    },
    "db25ff9b1c12431bbcb8b2533458ddbf": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_7c39efccfa784f0db7bfb5360e1f3297",
       "IPY_MODEL_8db825d776524542b4e14fd1d92c185d",
       "IPY_MODEL_25dfe876f2a3497f97ec3e837ee7a845"
      ],
      "layout": "IPY_MODEL_986c7c0f0e644c6590267ea2d394cbc8"
     }
    },
    "dbdca4f22b634f42810163ffa574bedb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_26d50a278c7b4d4eb05885dcd73d9b7e",
       "IPY_MODEL_16e34f9591c242d299b32ecf01e904c0",
       "IPY_MODEL_fa9482b3d6d24ea1b35df119ecd10539"
      ],
      "layout": "IPY_MODEL_a893bbcd40de4f01a271646bc6c8c549"
     }
    },
    "e01999c6f2a14d6db1fdb4f0000f50b3": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e0952b5402f24dc1b24cae7564ea2166": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_10b1058349e24e93bb6a115f40863d98",
      "placeholder": "​",
      "style": "IPY_MODEL_055f110dcdf84679b01e11850cee515a",
      "value": "Downloading: 100%"
     }
    },
    "e23935de00024ff9b02ab1c377d54662": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e3d62a91e874406996b5e8d6e76073df": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": "2",
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e51f01d5b45e4c56a3a8faf3f30cc106": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "efb90bcad30b406dae3f1260ad01e9e2": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "f13f18f43adf4f05ab1645fea6f30afb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "f2876e5f55c54fffbd0e993f1af1c309": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "f2b3019a0f924d5dab5b772829c9b6b1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_e3d62a91e874406996b5e8d6e76073df",
      "max": 63,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_9e63e9d12d35423387abc1f08a4b289b",
      "value": 63
     }
    },
    "fa5f3372b3ee4a1bb67f72d8d25493aa": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "fa9482b3d6d24ea1b35df119ecd10539": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_adaacddbb2ce43f4a55cefe8c1631c13",
      "placeholder": "​",
      "style": "IPY_MODEL_9f5f221feeca4f2fa92ea009a9592111",
      "value": " 990M/990M [00:20&lt;00:00, 51.0MB/s]"
     }
    },
    "fd14de107511431db32db3374ab0f0d6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "fd30383339904dc2ad7be314d98923c7": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "fe716937cbce463e88e69137562d370e": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
